//package com.yang;
//
//
//import org.bukkit.Bukkit;
//import org.bukkit.Location;
//import org.bukkit.Material;
//import org.bukkit.World;
//import org.bukkit.attribute.Attribute;
//import org.bukkit.configuration.ConfigurationSection;
//import org.bukkit.configuration.file.FileConfiguration;
//import org.bukkit.entity.EntityType;
//import org.bukkit.entity.LivingEntity;
//import org.bukkit.event.EventHandler;
//import org.bukkit.event.Listener;
//import org.bukkit.event.entity.EntityDeathEvent;
//import org.bukkit.inventory.ItemStack;
//import org.bukkit.plugin.java.JavaPlugin;
//
//import java.util.List;
//import java.util.Random;
//
//public final class RPGMonster2 extends JavaPlugin implements Listener {
//    private FileConfiguration config;
//
//    @Override
//    public void onEnable() {
//        getServer().getPluginManager().registerEvents(this, this);
//        loadConfig();
//        startMonsterSpawning();
//    }
//
//    private void loadConfig() {
//        config = getConfig();
//        config.options().copyDefaults(true);
//        saveDefaultConfig();
//    }
//
//    private void startMonsterSpawning() {
//        Bukkit.getScheduler().runTaskTimer(this, () -> {
//            for (World world : Bukkit.getServer().getWorlds()) {
//                for (LivingEntity entity : world.getLivingEntities()) {
//                    if (entity instanceof LivingEntity) {
//                        spawnMonstersNearPlayer(entity.getLocation());
//                    }
//                }
//            }
//        }, 0, 20 * 20); // 每20秒执行一次
//
//        getLogger().info("time ： ------------------》" + config.getInt("monsters.time"));
//    }
//
//    private void spawnMonstersNearPlayer(Location location) {
//        ConfigurationSection monstersSection = config.getConfigurationSection("monsters");
//
//        if (monstersSection != null) {
//            for (String monsterName : monstersSection.getKeys(false)) {
//                ConfigurationSection monsterSection = monstersSection.getConfigurationSection(monsterName);
//                int num = monsterSection.getInt("num", 1);
//
//                for (int i = 0; i < num; i++) {
//                    if (num <= 0) {
//                        break;
//                    }
//
//                    Location spawnLocation = location.clone().add(generateRandomOffset(), 0, generateRandomOffset());
//                    spawnMonster(monsterName, spawnLocation); // 将参数改回monsterName
//                    num--;
//                }
//            }
//        }
//    }
//
//    private double generateRandomOffset() {
//        int radius = 32;
//        Random random = new Random();
//        return (random.nextDouble() * radius * 2) - radius;
//    }
//
//    private void spawnMonster(String monsterName, Location spawnLocation) {
//        FileConfiguration config = getConfig();
//        ConfigurationSection monsterSection = config.getConfigurationSection("monsters." + monsterName);
//        if (monsterSection != null) {
//            // 获取掉落物品列表
//            List<String> drops = monsterSection.getStringList("drops");
//            if (config.contains("monsters." + monsterName + ".location")) {
//                World world = Bukkit.getWorld(config.getString("monsters." + monsterName + ".location.world"));
//                double x = config.getDouble("monsters." + monsterName + ".location.x");
//                double y = config.getDouble("monsters." + monsterName + ".location.y");
//                double z = config.getDouble("monsters." + monsterName + ".location.z");
//
//                if (world != null) {
//                    Location location = new Location(world, x, y, z);
//                    EntityType entityType = EntityType.valueOf(config.getString("monsters." + monsterName + ".type"));
//                    double health = config.getDouble("monsters." + monsterName + ".health");
//                    List<String> drops1 = config.getStringList("monsters." + monsterName + ".drops");
//                    // 生成怪物
//                    LivingEntity monster = (LivingEntity) location.getWorld().spawnEntity(location, entityType);
//                    monster.setCustomNameVisible(true);
//                    monster.setCustomName(config.getString("monsters." + monsterName + ".name"));
//
//                    monster.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(health);
//                    monster.setHealth(health);
//
//                    // 读取最小和最大掉落数量
//                    int minDrop = monsterSection.getInt("min_drop", 0);
//                    int maxDrop = monsterSection.getInt("max_drop", 10);
//
//                    // 随机生成掉落数量
//                    int dropAmount = (int) (Math.random() * (maxDrop - minDrop + 1)) + minDrop;
//
//                    // 生成掉落物品（从配置文件中读取）
//                    for (String drop : drops) {
//                        ItemStack item = new ItemStack(Material.valueOf(drop));
//                        item.setAmount(dropAmount);
//                        world.dropItemNaturally(spawnLocation, item); // 将掉落物品放置在生成怪物的位置
//                    }
//                } else {
//                    getLogger().warning("指定的世界不存在！");
//                }
//            }
//        }
//    }
//
//
//    @EventHandler
//    public void onEntityDeath(EntityDeathEvent event) {
//        LivingEntity entity = event.getEntity();
//        FileConfiguration config = getConfig();
//        ConfigurationSection monstersSection = config.getConfigurationSection("monsters");
//
//        if (monstersSection != null) {
//            for (String monsterName : monstersSection.getKeys(false)) {
//                ConfigurationSection monsterSection = monstersSection.getConfigurationSection(monsterName);
//                String monsterCustomName = monsterSection.getString("name");
//
//                if (entity.getCustomName() != null && entity.getCustomName().equals(monsterCustomName)) {
//                    event.getDrops().clear();
//
//                    int minDrop = monsterSection.getInt("dropsNum.min", 0);
//                    int maxDrop = monsterSection.getInt("dropsNum.max", 10);
//                    int dropAmount = new Random().nextInt(maxDrop - minDrop + 1) + minDrop;
//
//                    // 获取掉落物品列表
//                    List<String> drops = monsterSection.getStringList("drops");
//                    for (String drop : drops) {
//                        // 根据配置中的物品类型创建 ItemStack
//                        getLogger().info("则是" + Material.valueOf(drop));
//                        ItemStack dropItem = new ItemStack(Material.valueOf(drop), dropAmount);
//                        event.getDrops().add(dropItem); // 将掉落物品添加到掉落列表中
//                    }
//                }
//            }
//        }
//    }
//
//}
